package leetcode_周赛._2021._202103._20210328;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

/**
 * @author yzh
 * @data 2021/3/28 11:08
 * 思路：
 *   把集合 list 转化成 map
 *   超时了，不使用 replaceAll 方法
 *   再定义一个字符串，如果不是括号，则直接加上，是括号，则加上转化后的字符串
 */
public class _5714 {
    public static void main(String[] args) {
        String s = "(name)is(age)yearsold";
        ArrayList<List<String>> list = new ArrayList<>();
        list.add(Arrays.asList("name","bob"));
        list.add(Arrays.asList("age","two"));
        System.out.println(new _5714().evaluate(s, list));
    }

    public String evaluate(String s, List<List<String>> knowledge) {
        HashMap<String, String> map = new HashMap<>();
        knowledge.stream().forEach(v -> {
            map.put(v.get(0), v.get(1));
        });
        StringBuilder tem = new StringBuilder(), ans = new StringBuilder();
        boolean flag = false;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c != '(' && c != ')') {
                if (!flag) ans.append(c);
                else tem.append(c);
            }
            if (c == '(') flag = true;
            else if (c == ')'){
                flag = false;
                ans.append(map.getOrDefault(tem.toString(), "?"));
                tem.delete(0, tem.length());
            }
        }
        return ans.toString();
    }
}
